package ny;

public class Test01 {
    public static void main(String[] args) {
        // USB接口
        interface USB {
            void open();    // 开启功能
            void close();   // 关闭功能
        }

// 鼠标类
        class Mouse implements USB {
            @Override
            public void open() {
                System.out.println("鼠标已连接，开始工作。");
            }

            @Override
            public void close() {
                System.out.println("鼠标已断开，停止工作。");
            }

            // 鼠标特有功能
            public void click() {
                System.out.println("鼠标点击！");
            }
        }

// 键盘类
        class Keyboard implements USB {
            @Override
            public void open() {
                System.out.println("键盘已连接，开始工作。");
            }

            @Override
            public void close() {
                System.out.println("键盘已断开，停止工作。");
            }

            // 键盘特有功能
            public void type() {
                System.out.println("键盘敲击！");
            }
        }

// 笔记本类
        class Laptop {
            // 笔记本运行
            public void run() {
                System.out.println("笔记本开机了！");
            }

            // 笔记本关机
            public void shutdown() {
                System.out.println("笔记本关机了！");
            }

            // 使用USB设备
            public void useDevice(USB device) {
                if (device != null) {
                    device.open();
                    // 多态后，判断实际类型，调用特有方法
                    if (device instanceof Mouse) {
                        ((Mouse) device).click();
                    } else if (device instanceof Keyboard) {
                        ((Keyboard) device).type();
                    }
                    device.close();
                }
            }
        }

// 测试类
        public class Main {
            public static void main(String[] args) {
                Laptop laptop = new Laptop();
                laptop.run();

                // 使用鼠标
                USB mouse = new Mouse();
                laptop.useDevice(mouse);

                System.out.println("----------------------");

                // 使用键盘
                USB keyboard = new Keyboard();
                laptop.useDevice(keyboard);

                laptop.shutdown();
            }
        }
    }
}
